import Vue from "vue"
import VueRouter from "vue-router"

// 使用VueRouter
Vue.use(VueRouter)

import routes from "./routers"


// // 增强push方法
//     // 1.备份 VueRouter.prototype.push
//     const originPush = VueRouter.prototype.push

//     // 2.增强push方法
//     VueRouter.prototype.push = function (location, okCallback, errCallback) {
//         if (okCallback || errCallback) {
//             originPush.call(this, location, okCallback, errCallback)
//         } else {
//             originPush.call(this, location).catch(() => { })
//         }
//     }


// // 增强replace方法
//     // 1.备份 VueRouter.prototype.push
//     const originReplace = VueRouter.prototype.replace

//     // 2.增强push方法
//     VueRouter.prototype.replace = function (location, okCallback, errCallback) {
//         if (okCallback || errCallback) {
//             originReplace.call(this, location, okCallback, errCallback)
//         } else {
//             originReplace.call(this, location).catch(() => { })
//         }
//     }


// 封装后的增强方法
function enhance(source, type) {
    // 1.备份 VueRouter.prototype[type]方法
    const origin = source.prototype[type];
    // 2.增强 push/replace方法
    source.prototype[type] = function (location, okCallback, errCallback) {
        if (okCallback || errCallback) {
            origin.call(this, location, okCallback, errCallback)
        } else {
            origin.call(this, location).catch(() => { })
        }
    }
}

// 增强 VueRouter 的 push 方法
enhance(VueRouter, "push")
// 增强 VueRouter 的 replace 方法
enhance(VueRouter, "replace")



export default new VueRouter({
    mode: "history",
    routes,
    scrollBehavior(to, from, savedPosition) {  //滚动条行为
    // to : 即将要进入的路由对象
    // from : 现在要离开的路由对象
    // savedPosition:  保存的滚动条的位置【通过浏览器前进后退才会纪录位置】
    // console.log(to)
    // console.log(from)
    // console.log(savedPosition)  //  null

    if(savedPosition) {
        return savedPosition;  //通过浏览器前进后退才会纪录位置，返回位置
    }else{
        return { x: 0, y: 0 };  //正常编程式路由导航/ router-link  直接回到最顶部
    }

}
})
